t
Operation Icons

Text, if any, in an operation indicates the operation’s name. 

Call to a Primitive

Prograph distinguishes primitives from user-defined operations by a double line along the bottom edge of their icons.

Call to a Universal Method  *437*

Universal methods are distinguished by not having the double line of a primitive and not having the C/Name prefix of class-based methods.

Call to the Macintosh Toolbox or to an External 

Calls to external C or Pascal routines, including Macintosh Toolbox calls, have double lines on their top and bottom edges.

Call to a Method in a Class  *437*

The structure of an operation name is significant. The occurrences of the slash character, /, in the name affect the semantics of the program. In the three forms of operation names with / that are given below, birth refers to a method name while Person refers to a class name.

Calls the birth method defined in the class in which the method containing this operation is defined (that is, in the class identified in the banner of the case window in which the //birth operation is found). If the birth method is not found in this class, the inheritance tree of superclasses is searched upward until a birth method is found.

Calls the birth method defined in the Person class. If not found in the Person class, the inheritance tree of superclasses is searched upward until a birth method is found.  *438*

Calls the birth method defined in the class of the instance arriving on the terminal of the operation. (If the operation has more than one terminal, the class of the instance arriving on the leftmost terminal is used to determine the class in which to search for the birth method.) If not found in the class of the arriving instance, the inheritance tree of superclasses of the arriving instance is searched upward until a birth method is found.

Annotations are applied to a selected operation by making a selection in the Opers menu.

Annotations can be applied to operations whether or not they have names, as in the case of an instance generating operation that accepts the class name in the form of a string input to an injection terminal.

  

 

 
Every Match has a control appended on its right.  *439*

 

 

 

 

 

 

The name of a Local serves as a comment.  *440*

 

The name of an Evaluate is always an arithmetic expression.

 

The name of a Mac Constant must be that of a valid Macintosh constant.

 

The name of a Mac Match must be that of a valid Macintosh constant. Every Mac Match has a control appended on its right.  *440*

 
The name of a Mac Global must be that of a valid Macintosh system global.

 

The name of a Mac Address must be that of a valid Macintosh field.  *441*

 

The name of a Mac Get Field must be that of a valid Macintosh field. 

 

The name of a Mac Set Field must be that of a valid Macintosh field.  *441*

Annotations are applied to a selected operation, terminal, or root by making a selection in the Controls menu.

Operations can be annotated with controls to affect execution flow. Common applications of control annotations are to provide iteration, recursion, and various forms of conditional execution.

 

Simple is a “nonannotation” annotation. That is, selecting Simple from the Controls menu removes any annotation applied to the selected operation, terminal, or root.

   

The name of a Super can only be of the form //name.  *442*

 

     Failure

      Success

       Failure

        Failure

      Success

       Failure

     Success

       Failure